﻿#region Copyright 
/*-------------------------------------------------------------------------
* 命名空间名称/文件名:    SSPivot.Tools.Services/IFileUploadService 
* CLR版本:     4.0.30319.42000
* 机器名称:    DESKTOP-NHMLO8A
* 功 能：       N/A
* 类 名：       IFileUploadService
* 创建时间：  2025/5/24 18:22:11
* 版本号：      v1.0
* 创建人:        xulong
*-------------------------------------------------------------------------*/
#endregion
using Aliyun.OSS.Util;
using Aliyun.OSS;
using COSXML.Auth;
using COSXML;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
using Qiniu.Storage;
using Qiniu.Util;
using SSPivot.AspNetCore.Services;
using SSPivot.Tools.Config;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SSPivot.Tools.Services.FileUpload
{
    public interface IFileUploadService : IApplicationService
    {
        #region FIle文件上传处理
        #region 本地上传方法(File)

        /// <summary>
        /// 本地上传方法(File)
        /// </summary>
        /// <param name="options"></param>
        /// <param name="fileExt"></param>
        /// <param name="file"></param>
        /// <param name="filesStorageLocation"></param>
        /// <returns></returns>
        Task<string> UpLoadFileForLocalStorage(FilesStorageConfig options, string fileExt, IFormFile file);
        #endregion

        #region 阿里云上传方法（File）
        /// <summary>
        /// 阿里云上传方法（File）
        /// </summary>
        /// <param name="options"></param>
        /// <param name="fileExt"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        Task<string> UpLoadFileForAliYunOSS(FilesStorageConfig options, string fileExt, IFormFile file);
        #endregion

        #region 腾讯云存储上传方法（File）
        /// <summary>
        /// 腾讯云存储上传方法（File）
        /// </summary>
        /// <param name="options"></param>
        /// <param name="fileExt"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        Task<string> UpLoadFileForQCloudOSS(FilesStorageConfig options, string fileExt, IFormFile file);
        #endregion

        #region 七牛云存储上传（File）
        /// <summary>
        /// 七牛云存储上传（File）
        /// </summary>
        /// <param name="options"></param>
        /// <param name="fileExt"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        Task<string> UpLoadFileForQiNiuKoDo(FilesStorageConfig options, string fileExt, IFormFile file);
        #endregion

        #endregion
        #region Base64文件上传处理

        #region 本地上传方法(Base64)

        /// <summary>
        /// 本地上传方法(Base64)
        /// </summary>
        /// <param name="options"></param>
        /// <param name="memStream"></param>
        /// <param name="filesStorageLocation"></param>
        /// <returns></returns>
        string UpLoadBase64ForLocalStorage(FilesStorageConfig options, MemoryStream memStream);
        #endregion

        #region 阿里云上传方法（Base64）
        /// <summary>
        /// 阿里云上传方法（Base64）
        /// </summary>
        /// <param name="options"></param>
        /// <param name="memStream"></param>
        /// <returns></returns>
        Task<string> UpLoadBase64ForAliYunOSS(FilesStorageConfig options, MemoryStream memStream);
        #endregion

        #region 腾讯云存储上传方法（Base64）

        /// <summary>
        /// 腾讯云存储上传方法（Base64）
        /// </summary>
        /// <param name="options"></param>
        /// <param name="bytes"></param>
        /// <returns></returns>
        string UpLoadBase64ForQCloudOSS(FilesStorageConfig options, byte[] bytes);
        #endregion

        #region 牛云上传方法（Base64）

        /// <summary>
        /// 七牛云上传方法（Base64）
        /// </summary>
        /// <param name="options"></param>
        /// <param name="bytes"></param>
        /// <returns></returns>
        string UpLoadBase64ForQiNiuKoDo(FilesStorageConfig options, byte[] bytes);
        #endregion
        #endregion
    }
}
